﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Input;

namespace Content_Animation
{
    class Personagem
    {
        private Texture2D imagem_animacao; // animacao com todos os frames necessarios ( frame = qtdade de repeticoes )
        private Rectangle posicao_tamanho; 
        private Rectangle rect_corte; 
        int tempo_atual,tempo_maximo; // tempo de transicao de um frame para outro e o maximo dele
        string nome_arquivo;
        KeyboardState keyboard;
        
        /// <summary>
        /// construtor da classe, pede-se content  p. carregar  os arquivos da classe
        /// </summary>
        /// <param name="Content"></param>
        public Personagem(ContentManager Content)
        {
            nome_arquivo = "stand";
            imagem_animacao = Content.Load<Texture2D>(nome_arquivo);
            posicao_tamanho = new Rectangle(300, 200, 100, 114);//x e y indicam a posicao do objeto na tela, width e height o tamanho na tela
            rect_corte = new Rectangle(0,0, imagem_animacao.Width/8, 114);//corte do retangulo da imagem
            tempo_maximo = 120; // definir tempo de transicao de frame
            keyboard = Keyboard.GetState(); // input teclado
            
        }
        public void Update(GameTime gameTime)
        {
            tempo_atual+= gameTime.ElapsedGameTime.Milliseconds;

            //looping animacao
            if(tempo_atual> tempo_maximo)
            {
                if(rect_corte.X == imagem_animacao.Width - rect_corte.Width)
                {
                    rect_corte.X = 0;
                }
                else
                {
                     rect_corte.X += rect_corte.Width;   
                }
                tempo_atual = 0;
            }

        }
        /// <summary>
        /// Metodo para desenhar dentro da classe, o parametro spriteBatch e necessario
        /// </summary>
        /// <param name="spriteBatch"></param>
        public void Draw(SpriteBatch spriteBatch)
        {
            //desenhando na tela
            spriteBatch.Draw(imagem_animacao, posicao_tamanho, rect_corte, Color.White);
        }
    }
}
